/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package persistencia;

import Utiles.Utiles;
import entidades.FichaInternacionImpl;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import persistencia.agente.FichaInternacion;
import persistencia.agente.FichaInternacionAgente;

/**
 *
 * @author mariodante
 */
public class IntermediarioFichaInternacion extends IntermediarioPersistencia {
// FICHA_INTERNACION (oidFichaInternacion, nroFicha , fechaIngreso , fechaEgreso , oidPaciente , oidEstadoFichaInternacion , oidCama , oidHabitacion 
    @Override
    protected String generarSQLBuscarConCriterio(Criterio criterio) {
        String sql = "SELECT * FROM FICHA_INTERNACION WHERE " + criterio.convertirAString();
        return sql;
    }

    @Override
    protected String generarSQLBuscarTodo() {
        return "SELECT * FROM FICHA_INTERNACION";
    }

    @Override
    protected String generarSQLBuscarXOid(String oid) {
         return "SELECT * FROM FICHA_INTERNACION WHERE oidFichaInternacion= '" + oid +"'";
    }

    // ( VARCHAR(36) NOT NULL,  INTEGER,  TIMESTAMP,  TIMESTAMP,  VARCHAR(36),  VARCHAR(36),  VARCHAR(36),  VARCHAR(36), 
    @Override
    protected String generarSQLGuardar(Object objeto) {
        FichaInternacionAgente ob = (FichaInternacionAgente)objeto;
        
        String sql = "INSERT INTO FICHA_INTERNACION (oidFichaInternacion, nroFicha , fechaIngreso"
                + ", fechaEgreso, oidPaciente, oidEstadoFichaInternacion, oidCama, oidHabitacion) VALUES ("
                + "'" +ob.getOid()
                //+ generarOid()
                //ob.getOid()==null || ob.getOid().trim().equals("")? generarOid() : ob.getOid()
                + "', " + ob.getNroFicha()
                + ", '" + Utiles.convertirATIMESTAMP( ob.getFechaIngreso())
                + "', '" + Utiles.convertirATIMESTAMP( ob.getFechaEgreso())
                + "', '" + ob.getOidPaciente()
                + "', '" + ob.getOidEstadoFichaInternacion()
                + "', '" + ob.getOidCama()
                + "', '" + ob.getOidHabitacion()
                + "')";
        System.out.println("SQL Guardar: " + sql);
        return sql;
    }

    @Override
    protected String generarSQLActualizar(Object objeto) {
        FichaInternacionAgente ob = (FichaInternacionAgente)objeto;
        String sql = "UPDATE FICHA_INTERNACION SET "
                + "nroFicha = " + ob.getNroFicha()
                + ", fechaIngreso = '" +Utiles.convertirATIMESTAMP( ob.getFechaIngreso())
                + "', fechaEgreso = '" + Utiles.convertirATIMESTAMP( ob.getFechaEgreso()) 
                + "', oidPaciente = '" + ob.getOidPaciente()
                + "', oidEstadoFichaInternacion = '" + ob.getOidEstadoFichaInternacion()
                + "', oidCama = '" + ob.getCama()
                + "', oidHabitacion = '" + ob.getOidHabitacion()
                + "' WHERE oidFichaInternacion = '" + ob.getOid() + "'";
        System.out.println("SQL Actualizar: " + sql);
        return sql;
        
    }

    @Override
    protected String generarSQLEliminar(Object objeto) {
        return "DELETE FROM FICHA_INTERNACION WHERE oidFichaInternacion = '" + ((Agente) objeto).getOid() + "'";
    }

    @Override
    protected List<Object> convertirAObjeto(ResultSet result) {
        
        List<Object> resultado = new ArrayList<Object>();
        FichaInternacionImpl implementacion;
        FichaInternacionAgente agente;

        try {
            while (result.next()) {
                implementacion = new FichaInternacionImpl();
                agente = new FichaInternacionAgente();
                agente.setFichaInternacionImpl(implementacion);
                agente.setNroFicha(result.getInt("nroFicha"));
                agente.setFechaIngreso(result.getDate("fechaIngreso"));
                agente.setFechaEgreso(result.getDate("fechaEgreso"));
                agente.setOidPaciente(result.getString("oidPaciente"));
                agente.setOidEstadoFichaInternacion(result.getString("oidEstadoFichaInternacion"));
                agente.setOidCama(result.getString("oidCama"));
                agente.setOidHabitacion(result.getString("oidHabitacion"));
                agente.setOid(result.getString("oidFichaInternacion"));
                
                resultado.add(agente);
                
            }

        } catch (Exception e) {
            System.out.println("Error en materialización: " + e.toString());
        }

        return resultado;
    }

    @Override
    protected boolean guardarObjetosCompuestos(Object objeto) {
        throw new UnsupportedOperationException("Not supported yet.");
    }
    
    
}
